﻿' ----------------------------------------------------------------------------------
' Microsoft Developer & Platform Evangelism
' 
' Copyright (c) Microsoft Corporation. All rights reserved.
' 
' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, 
' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES 
' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ----------------------------------------------------------------------------------
' The example companies, organizations, products, domain names,
' e-mail addresses, logos, people, places, and events depicted
' herein are fictitious.  No association with any real company,
' organization, product, domain name, email address, logo, person,
' places, or events is intended or should be inferred.
' ----------------------------------------------------------------------------------

Public Interface ICloudQueue
    Property Name() As String

    Property Uri() As Uri

    Sub AddMessage(ByVal message As CloudQueueMessage, ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub Clear(ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub Create(ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub CreateIfNotExist(ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub Delete(ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub DeleteMessage(ByVal message As CloudQueueMessage, ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub Exists(ByVal callback As Action(Of CloudOperationResponse(Of Boolean)))

    Sub GetMessage(ByVal callback As Action(Of CloudOperationResponse(Of CloudQueueMessage)))

    Sub GetMessage(ByVal visibilityTimeout As TimeSpan, ByVal callback As Action(Of CloudOperationResponse(Of CloudQueueMessage)))

    Sub GetMessages(ByVal messageCount As Integer, ByVal callback As Action(Of CloudOperationResponse(Of IEnumerable(Of CloudQueueMessage))))

    Sub GetMessages(ByVal messageCount As Integer, ByVal visibilityTimeout As TimeSpan, ByVal callback As Action(Of CloudOperationResponse(Of IEnumerable(Of CloudQueueMessage))))

    Sub PeekMessage(ByVal callback As Action(Of CloudOperationResponse(Of CloudQueueMessage)))

    Sub PeekMessages(ByVal messageCount As Integer, ByVal callback As Action(Of CloudOperationResponse(Of IEnumerable(Of CloudQueueMessage))))
End Interface
